// 以下为Vue ElementUI组件的验证机制的验证规则
import {
	isDate,
	isDatetime,
	isDomainUrl,
	isEmail,
	isInt,
	isInternationalPhone,
	isNumberAndLetter,
	isPassword,
	isPhone, isUrl,
	isUsername
} from "./validator";

export const checkNumber = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('数值不能为空'))
	}
	if (isNaN(value)) {
		callback(new Error('请输入数字值'))
	} else {
		if (value <= 0) {
			callback(new Error('必须是个正数'))
		} else {
			callback()
		}
	}
}

export const checkInternationalPhone = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (isPhone(value)) {
		callback()
	} else if (isInternationalPhone(value)) {
		callback()
	} else {
		callback(new Error('手机号码格式不正确'))
	}
}

export const checkQQ = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (isInt(value)) {
		callback()
	} else {
		callback(new Error('QQ号 不正确'))
	}
}

export const checkEmail = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (isEmail(value)) {
		callback()
	} else {
		callback(new Error('邮箱地址不合法'))
	}
}

export const checkTimes = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('不能为空'))
	}
	setTimeout(() => {
		if (isNaN(value)) {
			callback(new Error('请输入数字值'))
		} else {
			if (value <= 0) {
				callback(new Error('必须是个正整数'))
			} else if (value > 999999) {
				callback(new Error('超过最大值（' + 999999 + '）'))
			} else {
				callback()
			}
		}
	}, 1000)
}

export const checkRebate = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (!value) {
		return callback(new Error('返点不能为空'))
	}
	// if(!Number.isInteger(value)) {
	if (isNaN(value)) {
		callback(new Error('请输入数字值'))
	} else {
		if (value <= 0) {
			callback(new Error('必须是个正整数'))
		} else if (value > 100) {
			callback(new Error('不能超过100'))
		} else {
			callback()
		}
	}
}

// 修改密码 用户新增一定要填密码
export const checkPassword = (rule, value, callback) => {
	if (value == null || value === '') {
		callback(new Error('请输入密码'))
	} else if (isPassword(value)) {
		callback()
	} else {
		callback(new Error('密码不能小于6位'))
	}
}

// 修改密码，不输入则不校验 新密码必须是字母，数字，或者字母和数字的组合
export const checkAccountPassword = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	} else if (/^.{6}$/.test(value) && /^[a-z0-9]+$/i.test(value)) {
		callback()
	} else {
		callback(new Error('正确格式为：新密码必须是字母，数字，或者字母和数字的组合,长度6位'))
	}
}

export const checkPhone = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (isPhone(value)) {
		callback()
	} else {
		callback(new Error('手机号码格式不正确'))
	}
}

export const checkRealname = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (!/^[·\u4e00-\u9fa5\s]{1,40}$/.test(value)) {
		callback(new Error('真实姓名格式不正确'))
	} else {
		callback()
	}
}

export const checkWX = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	}
	if (isNumberAndLetter(value)) {
		callback()
	} else {
		callback(new Error('微信号 不正确'))
	}
}

export const checkUsername = (rule, value, callback) => {
	if (value == null || value === '') {
		callback()
	} else if (isUsername(value)) {
		callback()
	} else {
		callback(new Error('用户名格式必须由3位以上字母、数字或下划线组成'))
	}
}

export const checkUrl = (rule, value, callback) => {
	if (isUrl(value)) {
		callback()
	} else {
		callback(new Error('网址不合法'))
	}
}

export const checkDomainUrl = (rule, value, callback) => {
	if (isDomainUrl(value)) {
		callback()
	} else {
		callback(new Error('网址不合法'))
	}
}

export const checkDate = (rule, value, callback) => {
	if (isDate(value)) {
		callback()
	} else {
		callback(new Error('日期不合法'))
	}
}

export const checkDatetime = (rule, value, callback) => {
	if (isDatetime(value)) {
		callback()
	} else {
		callback(new Error('日期不合法'))
	}
}

export const checkIp = (rule, value, callback) => {
	if (isNaN(value) || !isInt(value)) {
		return callback(new Error('请输入整数值'))
	} else {
		callback()
	}
}

